package ink.lovejinhu.leetcode;

import java.util.Arrays;

/**
 * @author jinhu
 * created 2021-06-30 9:18
 */
public class Solution_0136 {
    /**
     * 给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素
     *异或：相同为0，不同为1. 异或同一个数两次，原数不变
     * @param nums
     * @return
     */
    public int singleNumber(int[] nums) {
        Arrays.sort(nums);
        if (nums.length <= 1) {
            return nums[0];
        }
        int index = -1;
        for (int i = 0; i < nums.length - 1; ) {
            if (nums[i] == nums[i + 1]) {
                i += 2;
                continue;
            } else {
                index = i;
                return nums[index];
            }
        }
        return nums[nums.length - 1];
    }

    public static void main(String[] args) {
        int[] test = {4, 1, 2, 1, 2};
        Solution_0136 solution_0136 = new Solution_0136();
        System.out.println(solution_0136.singleNumber(test));
    }
}
